#include <stdio.h>
#include <string.h>
// int main()
// {
//     char c[10]="hello ";
//     char ch[]="bit hehe!";
//     strncat(c,ch,3);
//     printf("%s\n",c);
//     return 0;
// }
//strstr 函数的使用
// int main()
// {
    // char c[]="abcdef";
    // char*p=strstr(c,"d");//注意这里必须是字符串，用双引号括起来；
    // printf("%s\n",p);
    //打印结果是def
    //#############
    // char c[]="abcdef";
    // char*p=strstr(c,"m");
    // printf("%s\n",p);
    //打印结果是 null
    //###############
    // char c[]="abcdef";
    // char*p=strstr(c,"bcm");//这里寻找指定的字符串是一个整体 只要有一个不与目标字符串内容一致 就返回 null 
    // printf("%s\n",p);
    //打印结果是 null
    //###############
    // char c[]={'a','b','c'};
    // char*p=strstr(c,"\0"); //查找 直接认为是目标字符串的首地址
    // printf("%s\n",p);
    //打印结果是abc
    //###############
    // char c[]={0};
    // char*p=strstr(c,"\0");
    // printf("%s\n",p);
    //打印结果是空
//     return 0;
// }
//##########3########
// 模拟实现strstr()功能
// 版本一 my_strstr 函数内部过于冗余
char * my_strstr(const char* dest,const char* str)
{
    //在dest 寻找 str
    const char* s1=dest;
    const char* s2=str;
    const char* p=s1;
    while(*s1)
    {
        s1=p;
        s2=str;
        while(*s1 == *s2)
        {
            s1++;
            s2++;
        }
        if(*s2=='\0')
        {
            return p;
        }
        p++;
    }
    return NULL;
}
//版本二优化一下strstr 函数内部 
//使用长度受限制的strcmp函数-->strncmp
//
// char *my_strstr(const char* dest,const char* str)
// {
//     int len_str=strlen(str);
//     int len_dest=strlen(dest);
//     if((len_str-len_dest)>0)
//         return NULL;
//     else
//     {
//         while(*dest!='\0')
//         {
//             if(strncmp(dest,str,len_str)==0)
//                 return dest;

//             dest++;
//         }
//         return NULL;
//     }

// }
int main()
{
    char c[]="abbbcc";
    char ch[]="bbc";
    char* ret=my_strstr(c,ch);
    printf("%s\n",ret);
    return 0;
}
